package ru.st.selenium;

import static org.junit.Assert.assertTrue;

import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import ru.st.selenium.model.Department;
import ru.st.selenium.model.Employer;
import ru.st.selenium.pages.TestBase;

public class CreateUserAndDepartment extends TestBase {

	// BeforeMethod - выполняется ПЕРЕД каждым тестовым методом в этом классе.
	@BeforeMethod
	public void MayBeLogout() {
		if (app.getUserHelper().isNotLoggedIn()) {
			return;
		}
		app.getUserHelper().logout();
	}

	// Add Create/Edit/Remove Department
	@Test
	public void AddCreateDepartments() throws Exception {
		Department usersanddepartments = new Department()
				.setDepName("SПодразделение1 (тест)" + " " + randomString(10))
				.setConditionalNumber("SП1")
				.setCounter("1")
				.setResetDate("21.11.2018 23:59:59")
				.setNumeratorTemplate(
						"{counter}-{department}-произвольный текст");
		
		Department usersanddepartments1 = new Department()
				.setDepName("SПодразделение2 (тест)" + " " + randomString(10))
				.setConditionalNumber("SП2")
				.setCounter("100")
				.setResetDate("11.04.2016 23:59:59")
				.setNumeratorTemplate(
						"{counter}-{department}-{DD}.{MM}.{YYYY}");
		
		Department usersanddepartments2 = new Department()
				.setDepName("SПодразделение3 (тест)" + " " + randomString(10))
				.setConditionalNumber("SП3")
				.setCounter("77")
				.setResetDate("01.01.2018 23:59:59")
				.setNumeratorTemplate("{counter}-{department}-test");
		
		Department usersanddepartments2_1 = new Department()
				.setDepName(
						"SПодразделение3_1 (тест)" + " " + randomString(10))
				.setConditionalNumber("")
				.setCounter("137")
				.setResetDate("01.01.2018 23:59:59")
				.setNumeratorTemplate(
						"{counter}-{department}-дочернее подразделение");
						
		Department usersanddepartments3 = new Department()
				.setDepName("SПодразделение4 (Отредактированное)")
				.setConditionalNumber("SП4 (Отредактированное)")
				.setCounter("500")
				.setResetDate("01.12.2020 23:59:59")
				.setNumeratorTemplate("{counter}");

		
		
		app.getNavigationHelper().maximizeWindow();
		app.getUserHelper().loginAs(ADMIN);
		assertTrue(app.getUserHelper().isLoggedIn());
		
		app.getUsersAndDepartmentsHelper().createDepartments(
				usersanddepartments); // Создание подразделений
		app.getUsersAndDepartmentsHelper().createDepartments1(
				usersanddepartments1);
		app.getUsersAndDepartmentsHelper().createDepartments2(
				usersanddepartments2);
		app.getUsersAndDepartmentsHelper().createDepartments2_1(
				usersanddepartments2_1);
		app.getUsersAndDepartmentsHelper().createDepartments3(
				usersanddepartments3);
		
		app.getUsersAndDepartmentsHelper().deleteDepartments(); // Удаление
																// подразделений

		app.getNavigationHelper().gotoTopFrem();
		app.getUserHelper().logout();
		assertTrue(app.getUserHelper().isNotLoggedIn());

	}

	// Add Create Users
	@Test
	public void AddCreateUsers() throws Exception {
		Employer user = new Employer().setLastName("Спирова").setName("Виктория")
				.setPatronymic("Николаевна").setJobTitle("Главный бухгалтер")
				.setLoginName("Виктория").setPassword("ГБМИ123")
				.setСonfirmationPassword("ГБМИ123").setAdditionalNumber("100")
				.setUserForcedSorting("1")
				.setCountry("Россия")
				.setPostalCode("308000")
				.setRegion("Белгородская обл.")
				.setAddress("ул. Гагарина 12, п.2, кв.122")
				.setJobIphone("7(045)111-200-20")
				.setHomeIphone("89290012112")
				.setEmail("testingmotiw1@gmail.com")
				.setCompany("ЗАО 'Строй Инвест'");
		
		Employer user2 = new Employer().setLastName("Маршак").setName("Геннадий")
				.setPatronymic("Александрович").setJobTitle("Ген. директор")
				.setLoginName("Маршак").setPassword("МАР123")
				.setСonfirmationPassword("МАР123").setAdditionalNumber("50")
				.setUserForcedSorting("2")
				.setCountry("Казахстан")
				.setPostalCode("308011")
				.setRegion("Белгородская обл.")
				.setAddress("ул. Путна 100/12, кв.32")
				.setJobIphone("7(045)555-11")
				.setHomeIphone("81110512112")
				.setEmail("testingmotiw2@gmail.com")
				.setCompany("ЗАО 'Строй Инвест'");
		
		Employer user3 = new Employer().setLastName("Иванов").setName("Иван")
				.setPatronymic("Иванович").setJobTitle("Инженер-программист")
				.setLoginName("Иванов").setPassword("123")
				.setСonfirmationPassword("123").setAdditionalNumber("200")
				.setUserForcedSorting("14")
				.setCountry("Российская Федерация")
				.setPostalCode("11128011")
				.setRegion("Московская обл.")
				.setAddress("ул. Горького 12/13, кв.500")
				.setJobIphone("7(045)522-11")
				.setHomeIphone("8999512112")
				.setEmail("testingmotiw3@gmail.com")
				.setCompany("ЗАО 'Строй Инвест'");

		app.getNavigationHelper().maximizeWindow();
		app.getUserHelper().loginAs(ADMIN);
		assertTrue(app.getUserHelper().isLoggedIn());
		app.getUsersAndDepartmentsHelper().createUsers(user);
		app.getUsersAndDepartmentsHelper().createUsers2(user2);
		app.getUsersAndDepartmentsHelper().createUsers3(user3);
		app.getUserHelper().logout();
		
		app.getUserHelper().loginAs(user); // Входим в систему под созданным пользователем
		assertTrue(app.getUserHelper().isLoggedInAs(user)); // Проверяем, что мы успешно залогинены под созданным пользователем - 1
		app.getNavigationHelper().gotoTopFrem();
		app.getUserHelper().logout();
		
		app.getUserHelper().loginAs(user2);
		assertTrue(app.getUserHelper().isLoggedInAs(user2)); // Проверяем, что мы успешно залогинены под созданным пользователем - 2
		app.getNavigationHelper().gotoTopFrem();
		app.getUserHelper().logout();
		
		assertTrue(app.getUserHelper().isNotLoggedIn());

	}

}
